package com.element.music.repository.repository;

import com.element.music.repository.entity.user.UserEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

/**
 * 功能描述：
 * <p>
 * User: nft musician   developer
 * Date: 2022/1/10
 */

@Repository
public interface UserRepository extends JpaRepository<UserEntity, Long> {

    /**
     * 删除用户
     * @param walletAddress token
     */
    void deleteByWalletAddress(String walletAddress);

    /**
     * 根据walletAddress找到 实体
     * @param walletAddress  token
     * @return
     */
    UserEntity findUserEntityByWalletAddress(String walletAddress);


    /**
     * 编辑用户名
     * @param userId userId
     * @param name name
     */
    @Modifying
    @Query("update UserEntity m set m.userName= ?2 where m.id=?1")
    void updateUserName(Long userId, String name);


    /**
     * 编辑用户名
     * @param userId userId
     * @param email email
     */
    @Modifying
    @Query("update UserEntity m set m.email= ?2 where m.id=?1")
    void updateUserEmail(Long userId, String email);


    /**
     * 编辑头像
     * @param userId userId
     * @param profileImg 头像
     */
    @Modifying
    @Query("update UserEntity m set m.profileImg= ?2 where m.id=?1")
    void updateUserProfileImg(Long userId, String profileImg);


    /**
     * 编辑backdrop
     * @param userId userId
     * @param backDrop backDrop
     */
    @Modifying
    @Query("update UserEntity m set m.backDrop= ?2 where m.id=?1")
    void updateBackDrop(Long userId, String backDrop);


    /**
     * 编辑twitter
     * @param userId userId
     * @param twitter twitter
     */
    @Modifying
    @Query("update UserEntity m set m.twitter= ?2 where m.id=?1")
    void updateUserTwitter(Long userId, String twitter);


    /**
     * 编辑website
     * @param userId userId
     * @param website website
     */
    @Modifying
    @Query("update UserEntity m set m.website= ?2 where m.id=?1")
    void updateUserWebsite(Long userId, String website);




    /**
     * 编辑website
     * @param walletAddress walletAddress
     */
    @Modifying
    @Query("update UserEntity m set m.sessionId= '' where m.walletAddress=?1")
    void clearSessionId(String walletAddress);


}
